﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business;
namespace QLHS
{
    public partial class UCDiemMon : UserControl
    {
        public UCDiemMon()
        {
            InitializeComponent();
        }
        HocSinh_BUL l = new HocSinh_BUL();
        MonHoc_BUL bu = new MonHoc_BUL();
        HocSinh_BUL hs = new HocSinh_BUL();
        string truoc = "";
        string sau = "";
        private void UCDiemMon_Load(object sender, EventArgs e)
        {
            lo_lop.Properties.DataSource = l.Laylop();
            lo_lop.Properties.DisplayMember = "TENLOP";
            lo_lop.Properties.ValueMember = "TENLOP";
            //......................................
            gridControl1.DataSource = bu.Loaddata();
            txtmonhoc.Enabled = false;
            lo_lop.Enabled = false;
            lo_ten.Enabled = false;
            txtdeim15.Enabled = false;
            txtdiem1t.Enabled = false;
            cbohk.Enabled = false;
            btnluu.Enabled = false;
            btnthem.Enabled = true;
            btnsua.Enabled = true;
            btnxoa.Enabled = true;
            Phanmon(frm_Main.kt);
            truoc = txtmonhoc.Text;
        }
        string kt = "";
        private void btnthem_Click(object sender, EventArgs e)
        {
            kt = "Them";
            btnluu.Enabled = true;
            btnthem.Enabled = false;
            btnsua.Enabled = false;
            btnxoa.Enabled = false;
            lo_ten.Text = lo_lop.Text = txtdeim15.Text = txtdiem1t.Text = txtdiemtb.Text= cbohk.Text = "";
            lo_lop.Focus();
            lo_lop.Enabled = true;
            lo_ten.Enabled = true;
            txtdeim15.Enabled = true;
            txtdiem1t.Enabled = true;
            cbohk.Enabled = true;
            tenl = tenhs = hk = "";
            gridControl1.Enabled = false;
            st = 2;
        }
        int st = 0;
        int sk = 0;
        private void btnsua_Click(object sender, EventArgs e)
        {
            kt = "Sua";
            st = 1;
            btnluu.Enabled = true;
            btnthem.Enabled = false;
            btnsua.Enabled = false;
            btnxoa.Enabled = false;
            lo_lop.Enabled = false;
            lo_ten.Enabled = false;
            txtdeim15.Enabled = true;
            txtdiem1t.Enabled = true;
            cbohk.Enabled = true;
        }
        string tenl, tenhs, hk;
        private void btnxoa_Click(object sender, EventArgs e)
        {
            
            try
            {
                if (MessageBox.Show("Xóa thật àk???", "Thông Báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    if (KTL2(frm_Main.kt, truoc, sau) == 1)
                    {
                        MessageBox.Show("Bạn chỉ được xóa môn mà bạn day thôi...","Thông Báo");
                    }
                    else if(bu.Xoa(lo_ten.Text,txtmonhoc.Text))
                    {
                        TihTLD();
                        if (bu.Capnhatl2(lo_lop.Text, cbohk.Text, txtmonhoc.Text, sld, tld))
                        {
                            kthl();
                            bu.CapnhatTKHK(lo_lop.Text, cbohk.Text, int.Parse(l.Demlop(lo_lop.Text)), soldat, tiled);
                            hs.CapnhatTBHK(lo_ten.Text, lo_lop.Text, bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text), bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text), cbohk.Text);
                            MessageBox.Show("Xóa thành công!...", "Thông Báo");
                            UCDiemMon_Load(sender, e);
                        }
                        else
                            MessageBox.Show("Xóa thất bại...","Thông Báo");
                    }
                    else
                       MessageBox.Show("Lỗi!...", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
               
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString(),"Thông Báo");
            }
        }

        private void btnluu_Click(object sender, EventArgs e)
        {
            try
            {
                if (lo_lop.Text == "" || lo_ten.Text == "" || txtmonhoc.Text == "" || txtdiem1t.Text == "" || txtdeim15.Text == "" || cbohk.Text == "")
                MessageBox.Show("Vui lòng nhập đầy đủ các thông tin","Thông Báo");
                else if (kt == "Them")
                {
                    if (txtdiemtb.Text == "")
                        MessageBox.Show("Bạn vẫn chưa tính điểm trung bình cho học sinh này", "Thông Báo");
                    else if (bu.KT(lo_lop.Text, lo_ten.Text, txtmonhoc.Text, cbohk.Text))
                        MessageBox.Show("Tron 1 lớp học sinh không thể học trùng môn trong một học kỳ...\nP/s: Vui lòng nhập lại","Thông Báo");
                    else if (bu.Them(lo_ten.Text, lo_lop.Text, txtmonhoc.Text, cbohk.Text, float.Parse(txtdeim15.Text), float.Parse(txtdiem1t.Text), float.Parse(txtdiemtb.Text)))
                    {
                        sk = 0;
                        TihTLD();
                        if (bu.ktl2(lo_lop.Text, txtmonhoc.Text)==false)
                        {
                            if (bu.Theml2(lo_lop.Text, txtmonhoc.Text, cbohk.Text, int.Parse(l.Demlop(lo_lop.Text)),sld,tld))
                            {
                                MessageBox.Show("Thêm thành công!...", "Thông Báo");
                                //UCDiemMon_Load(sender, e);
                            }
                            else
                                MessageBox.Show("Toạch lần 2!...", "Thông Báo");
                        }
                        else
                        {
                            if (bu.ktl3(lo_lop.Text, txtmonhoc.Text, cbohk.Text)!=0)
                            {
                                if (bu.ktl4(lo_lop.Text, txtmonhoc.Text, cbohk.Text) != 0)
                                {
                                    if (bu.Capnhatl2(lo_lop.Text, cbohk.Text, txtmonhoc.Text, sld, tld))
                                    {
                                        MessageBox.Show("Thêm thành công!...", "Thông Báo");
                                        //UCDiemMon_Load(sender, e);
                                    }
                                    else
                                        MessageBox.Show("Toạch!...", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    if (bu.Theml2(lo_lop.Text, txtmonhoc.Text, cbohk.Text, int.Parse(l.Demlop(lo_lop.Text)), sld, tld))
                                    {
                                        MessageBox.Show("Thêm thành công!...", "Thông Báo");
                                        //UCDiemMon_Load(sender, e);
                                    }
                                    else
                                        MessageBox.Show("Toạch lần 2!...", "Thông Báo");
                                }
                            }
                            else 
                            {
                                if (bu.Capnhatl2(lo_lop.Text, cbohk.Text, txtmonhoc.Text, sld, tld))
                                {
                                    MessageBox.Show("Thêm thành công!...", "Thông Báo");
                                    //UCDiemMon_Load(sender, e);
                                }
                                else
                                    MessageBox.Show("Toạch!...", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        TinhTKHK();
                        bu.CapnhatTKHK(lo_lop.Text, cbohk.Text, int.Parse(l.Demlop(lo_lop.Text)), soldat, tiled);
                        hs.CapnhatTBHK(lo_ten.Text, lo_lop.Text, bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text), bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text),cbohk.Text);
                        gridControl1.Enabled = true;
                    }
                    else
                        MessageBox.Show("Lỗi!...", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (kt == "Sua")
                {
                    if (st!=sk)
                        MessageBox.Show("Bạn vẫn chưa tính lại điểm trung bình cho học sinh này", "Thông Báo");
                    else if (KTL2(frm_Main.kt, truoc, sau) == 1)
                    {
                        MessageBox.Show("Bạn chỉ được xóa môn mà bạn day thôi...", "Thông Báo");
                    }
                    else if (bu.Sua(lo_ten.Text, txtmonhoc.Text, cbohk.Text, float.Parse(txtdeim15.Text), float.Parse(txtdiem1t.Text), float.Parse(txtdiemtb.Text)))
                    {
                        TihTLD();
                        if (bu.Capnhatl2(lo_lop.Text, cbohk.Text, txtmonhoc.Text, sld, tld))
                        {
                            kthl();
                            bu.CapnhatTKHK(lo_lop.Text, cbohk.Text, int.Parse(l.Demlop(lo_lop.Text)), soldat, tiled);
                            hs.CapnhatTBHK(lo_ten.Text, lo_lop.Text, bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text), bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text), cbohk.Text);
                            MessageBox.Show("Sửa thành công!...", "Thông Báo");
                            gridControl1.Enabled = true;
                            //UCDiemMon_Load(sender, e);
                        }
                        else
                            MessageBox.Show("Sửa thất bại...", "Thông Báo");
                    }
                    else
                        MessageBox.Show("Lỗi!...", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(),"Thông Báo");
            }
            UCDiemMon_Load(sender, e);
        }

        private void gridControl1_Click(object sender, EventArgs e)
        {
            try
            {
                lo_ten.Properties.NullText = gridView1.GetFocusedRowCellDisplayText("HOTEN");
                lo_lop.Properties.NullText = gridView1.GetFocusedRowCellDisplayText("LOP");
                txtmonhoc.Text = gridView1.GetFocusedRowCellDisplayText("MONHOC");
                cbohk.Text = gridView1.GetFocusedRowCellDisplayText("HOCKY");
                txtdeim15.Text = gridView1.GetFocusedRowCellDisplayText("DIEM15");
                txtdiem1t.Text = gridView1.GetFocusedRowCellDisplayText("DIEM1T");
                txtdiemtb.Text = gridView1.GetFocusedRowCellDisplayText("DIEMTB");
                tenhs = lo_ten.Text;
                tenl = lo_lop.Text;
                hk = cbohk.Text;
                sau = txtmonhoc.Text;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Thông Báo");
            }
        }

        private void btntinh_Click(object sender, EventArgs e)
        {
            sk = 1;
            float d15, d1t, dtb;
            try
            {
                if (txtdeim15.Text == "" || txtdiem1t.Text == "")
                    MessageBox.Show("Vui lòng nhập đủ hai cột điểm...", "Thông Báo");
                else
                {
                    d15 = float.Parse(txtdeim15.Text);
                    d1t = float.Parse(txtdiem1t.Text);
                    if (d15 >= 0 && d15 <= 10 && d1t >= 0 && d1t <= 10)
                    {
                        dtb = (d15 + (d1t * 2)) / 3;
                        txtdiemtb.Text = dtb.ToString();
                    }
                    else
                        MessageBox.Show("Điểm phải nằm trong khoảng từ 0 đến 10","Thông Báo");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Thông Báo");
            }
        }

        private void lo_lop_EditValueChanged(object sender, EventArgs e)
        {
            lo_ten.Properties.DataSource = bu.LayHS(lo_lop.Text);
            lo_ten.Properties.DisplayMember = "HOTENHS";
            lo_ten.Properties.ValueMember = "HOTENHS";
        }

        private void txtdeim15_KeyPress(object sender, KeyPressEventArgs e)
        {
            string ValidChar = "0123456789" + Convert.ToChar(8).ToString();
            if (!ValidChar.Contains(e.KeyChar))
                e.Handled = true;
        }
        float tile,sdd;
        int sld;
        string tld = "";
        private void txtdiem1t_KeyPress(object sender, KeyPressEventArgs e)
        {
            string ValidChar = "0123456789" + Convert.ToChar(8).ToString();
            if (!ValidChar.Contains(e.KeyChar))
                e.Handled = true;
        }
        void TihTLD()
        {
            sdd = float.Parse(bu.Laydiemdau(txtmonhoc.Text));
            sld = bu.SLD(sdd,lo_lop.Text,cbohk.Text,txtmonhoc.Text);
            tile = (float)(sld / float.Parse(l.Demlop(lo_lop.Text)))*100;
            tld = tile + " %";
        }
        string tiled="";
        int soldat;
        void TinhTKHK()
        {
            float tam=bu.TT(lo_ten.Text, lo_lop.Text, cbohk.Text);
            int tam2 = bu.LaySLD(lo_lop.Text, cbohk.Text);
            if (tam>= 5)
                soldat = tam2+1;
            float k = (float)(soldat / float.Parse(l.Demlop(lo_lop.Text))) * 100;
            tiled = k + " %";
        }
        void kthl()
        {
            soldat=bu.LaySLD(lo_lop.Text,cbohk.Text);
            if (bu.TT(tenhs, tenl, hk) == 0)
                soldat -= 1;
            if (soldat == 0)
                soldat = 0;
            float k = (float)(soldat / float.Parse(l.Demlop(lo_lop.Text))) * 100;
            tiled = k + " %";
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            frm_Inanl2 f = new frm_Inanl2();
            f.Show();
        }
        void Phanmon(string gv)
        {
            if (gv == "DAODUC")
                txtmonhoc.Text = "Đạo Đức";
            else if (gv == "DIALY")
                txtmonhoc.Text = "Địa Lý";
            else if (gv == "HOA")
                txtmonhoc.Text = "Hóa Học";
            else if (gv == "LICHSU")
                txtmonhoc.Text = "Lịch Sử";
            else if (gv == "NGUVAN")
                txtmonhoc.Text = "Ngữ Văn";
            else if (gv == "THEDUC")
                txtmonhoc.Text = "Thể Dục";
            else if (gv == "TOAN")
                txtmonhoc.Text = "Toán";
            else if (gv == "VATLY")
                txtmonhoc.Text = "Vật Lý";
            else if (gv == "SINHOC")
                txtmonhoc.Text = "Sinh Học";
            else if (gv == "ADMIN")
            {
                txtmonhoc.Enabled = true;
                btnluu.Enabled = false;
                btnsua.Enabled = true;
                btnxoa.Enabled = true;
                btnthem.Enabled = true;
                btntinh.Enabled = true;
            }
            else
            {
                btnluu.Enabled = false;
                btnsua.Enabled = false;
                btnxoa.Enabled = false;
                btnthem.Enabled = false;
                btntinh.Enabled = false;
            }
        }
        int KTL2(string gv, string t, string s)
        {
            int i=0;
            if (gv != "ADMIN")
            {
                if (t != s)
                    i = 1;
                else
                    i = 2;
            }
            return i;
        }
    }
}
